/**
 * @Author Stark
 * @Date 2022/2/13 9:24
 */
public class Day7 {
    //1、在一个二维数组中，每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序。请完成一
    //个函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数。时间复杂度小于O(n) ,空间复杂度O(1).
    public static void find_val(int [][]arr,int row,int col,int num) {
        int r = arr.length - 1;
        int c = 0;
        while((r >= 0 && r <= 3) && (c >= 0 && c <= 3)){
            if(arr[r][c] > num){
                r--;
            }else if(arr[r][c] < num){
                c++;
            }else{
                System.out.println("找到该数：[" + r + "," + c + "]");
                return;
            }
        }
        System.out.println("没找到该数");
    }

    //2、将一个字符串从左开始前k个字符进行旋转：左旋数组 。例如字符串："abcdef"，前2个左旋结果是："cdefab"。
    public static void LeftRotateString(String str,int n){
        char[] arr = str.toCharArray();
        n = n % arr.length;
        System.out.println(str);
        reverse(arr,0,n - 1);
        reverse(arr,n,arr.length - 1);
        reverse(arr,0,arr.length - 1);
        str = new String(arr);
        System.out.println(str);
    }

    private static void reverse(char[] arr, int start, int end) {
        while(start < end){
            char ch = arr[start];
            arr[start] = arr[end];
            arr[end] = ch;
            start++;
            end--;
        }
    }

    public static void main(String[] args) {
//        int [][]array = {
//                {1,2,8,9},
//                {2,4,9,12},
//                {4,7,10,13},
//                {6,8,11,15}
//        };
//        find_val(array,3,3,1);

        String str = "abcdefg";
        LeftRotateString(str,2);
    }
}
